package br.com.mynage.service.impl;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
import org.primefaces.model.UploadedFile;

import br.com.mynage.dao.IArquivoDao;
import br.com.mynage.dao.ITarefaDAO;
import br.com.mynage.dao.impl.ArquivoDaoImpl;
import br.com.mynage.dao.impl.TarefaDaoImpl;
import br.com.mynage.dominio.ArquivoTarefa;
import br.com.mynage.dominio.Tarefa;
import br.com.mynage.service.IServiceArquivo;

public class ServiceArquivoImpl  implements IServiceArquivo {

	IArquivoDao dao;
	
	/**Método deverá que recebe um arquilo que foi submetido pelo usuário e cadastrar na base de dados.*/
	public String cadastrar(UploadedFile arquivo,ArquivoTarefa arquivoTarefa) {
		try {
			
			ITarefaDAO tDao = new TarefaDaoImpl();
			arquivoTarefa.setTarefa(tDao.findByPrimaryKey(arquivoTarefa.getTarefa().getId()));
			dao = new ArquivoDaoImpl();
			
			
			dao.insert(arquivoTarefa);
			
			File dir = new File("C://MynageFiles/");
			dir.mkdirs();
			FileOutputStream fout = new FileOutputStream("C://MynageFiles/"+arquivoTarefa.getId());
			fout.write(arquivo.getContents());
			fout.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return null;
	}
	
	
	public StreamedContent getArquivo(Tarefa tarefa) {
		dao = new ArquivoDaoImpl();
		try {
			ArquivoTarefa at = dao.findArquivotarefa(tarefa);
			
			File fp = new File("C://MynageFiles/"+at.getId());
			
			if (fp.exists()) {
				FileInputStream stream = new FileInputStream(fp);
				return new DefaultStreamedContent(stream,at.getExtensao() , at.getNome());
			}
			
			return null;
			
		} catch  (Exception e){
			e.printStackTrace();
			
		}
		
		return null;
	}

}
